#!/usr/bin/env node
//第一行是cli的入口说明（必有的）

/**
 * 脚手架的工作流程
 * 1、通过命令行交互询问用户问题
 * 2、根据用户回答的结果生成文件
 */

const path = require('path')
const fs = require('fs')
const inquirer = require('inquirer')
const ejs = require('ejs')

inquirer
  .prompt([
    {
      type: 'input',
      name: 'title',
      message: 'Project name?',
      default: 'lzc-cli-default',
    },
    {
      type: 'input',
      name: 'name',
      message: 'Your name?',
      default: 'lzc-default',
    },
    {
      type: 'input',
      name: 'age',
      message: 'Your age?',
      default: '100',
    },
    {
      type: 'list',
      message: 'Your sex',
      name: 'sex',
      choices: ['先生', '女士'],
    },
    {
      type: 'confirm',
      message: '是否使用监听?',
      name: 'watch',
      suffix: '后缀',
    },
    {
      type: 'confirm',
      name: 'filter',
      message: '是否使用筛选？',
      when(respon) {
        return respon.watch
      },
    },
    {
      type: 'confirm',
      message: '是否编辑',
      name: 'isEdit',
      default: false,
    },
    {
      type: 'editor',
      name: 'editor',
      message: '请编辑',
      when(respon) {
        return respon.isEdit
      },
    },
    {
      type: 'checkbox',
      message: '你的爱好',
      name: 'hobby',
      choices: ['足球', '篮球', '羽毛球'],
    },
  ])
  .then(respon => {
    console.log('respon', respon)
    // 模板文件路径
    const tempDir = path.resolve(__dirname, '../templates')

    // 目标目录，现在是当前的文件夹
    const destDir = process.cwd()

    // 将template文件夹的模板文件，转化目标目录下面
    fs.readdir(tempDir, (err, files) => {
      if (err) throw err
      console.log('files', files)
      files.forEach(file => {
        // 模板引擎渲染文件
        ejs.renderFile(path.join(tempDir, file), respon, (err, result) => {
          if (err) throw err

          // 把问答的结果写入文件
          fs.writeFileSync(path.join(destDir, file), result)
        })
      })
    })
  })
